Repository navigation
Fix(Tweety): 5 notebooks C# et la sonde IKVM sous Linux et macOS, RID dérivé de la machine (hors flotte) - #18444
Conversation
… derive de la machine Lot B1 de la serie Tweety, suite de #18067 : Tweety-4-Aspic, 4-Belief-Revision, 5-Abstract-Argumentation, 10-MLN (IKVM 8.14.0) et 11-Causal, plus la sonde _probes/Tweety-IKVM-Init-Probe. Le RID IKVM passe de win-x64 code en dur a OperatingSystem + RuntimeInformation.ProcessArchitecture ; la reference NuGet explicite IKVM.Image.runtime.win-x64 est retiree (IKVM.Image la tire, avec les dix autres RID). Prose generalisee la ou elle citait win-x64 (Belief-Revision, sonde). Re-execution complete sous Linux (dotnet-interactive 1.0.617701) : 0 erreur. Sorties identiques a la base hors RID, culture et ordre d'affichage d'ensembles Java ; sur 10-MLN, les durees et la valeur echantillonnee changent (Monte-Carlo non seede), et la cellule 18 cessait de correspondre a la sortie : reformulee pour ne citer que des valeurs non dependantes de la machine. Parite jumelle rebaselinee sur les quatre paires concernees. Hors flotte (session cloud d'agnosticisme). See #17654. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: extraction intégrale base↔head des 6 notebooks + attestations twin-parity = blobs réels + sweep RID actif = 0 résiduel) — la seule garde rouge est le minuteur DWELL, classe connue, pas un verdict de contenu.
[NanoClaw] Review structurelle (protocole v2, 6 notebooks) — head dc117887, extraction intégrale base (102974ee) ↔ head des 6 .ipynb, lecture complète des cellules modifiées, outputs réduits à des empreintes puis décodés en texte pour les cellules de configuration, attestations YAML relues firsthand, SHAs recoupés contre les blobs git au head.
Vérifié (premier degré) :
- Recette RID uniforme et intégrale : la même expression
(OperatingSystem.IsWindows() ? "win" : OperatingSystem.IsMacOS() ? "osx" : "linux") + "-" + RuntimeInformation.ProcessArchitecture.ToString().ToLowerInvariant()est posée aux 6 endroits de configuration (Aspic c3, Belief-Revision c4, Abstract-Argumentation c26, MLN c1, Causal c22, Probe c3), précédée du même commentaire d'une ligne, avec retrait du#r "nuget: IKVM.Image.runtime.win-x64, …"là où il existait (5 notebooks ; MLN en IKVM 8.14 n'en avait pas — cohérent avec le claim nuspec du body,IKVMtirantIKVM.Image). La recette est identique à celle du lot A #18067, dont la forme est présente dansTweety-3-Dung-Csharp.ipynbsur main (vérifié). Sweep complet des heads : zérowin-x64en code actif ni en output — les 9 occurrences résiduelles sont toutes en commentaire/prose explicitante (« par exemplewin-x64oulinux-x64»), légitimes. - Markdown ajusté aux 3 endroits annoncés, rien d'autre : Belief-Revision c2 (« trois paquets » → « deux paquets » + runtime tiré par
IKVM.Image) et c5 (win-x64→<rid>avec exemples par plateforme), Probe c1 (any/any + win-x64→any/any + le RID de la machine), MLN c18 reformulée fidèle à la sortie (durées machine-dépendantes retirées, « environ 15× » conservé avec les deux mesures 15.6×/15.3×, vraie valeur 0.8301 citée, tirage du run 0.8633 ancré dans l'output de c17 — la formule est strictement meilleure que la base qui figeait des chronomètres). Aucun autre markdown touché sur les 6 notebooks ; zéro doublon. - Ré-exécution Linux réelle sur les 6 : papermill 17:34:22→17:37:41Z séquentiel (48,3 s / 7,8 s / 10,2 s / 107,7 s / 6,1 s / 10,5 s),
exception: nullpartout, exec counts séquentiels, zéro output d'erreur. Les témoins de santé IKVM sont dans les outputs committés :ikvm-home-8.15.0-linux-x64(ou 8.14.0 pour MLN),tzdb=True/OK,bin/ikvm.properties: True, les 4 DLL copiées. Le détail.nuspecdu body (IKVM 8.14.0 → IKVM.Image → 11 runtimes) est cohérent avec le résultat observé sous Linux. - Diagnostic de dérive du body confirmé au caractère sur le point vérifiable : Tweety-5 c26, stream
DLL tweety-dung chargéebasebd7d270f« 8,67 Mo » (virgule, culture fr-FR) ↔ head5c507424« 8.67 Mo » (point) — le claim « culture (séparateur décimal d'une taille de DLL) » est exact. Les autres écarts (RID du home, durées Stopwatch, ordre d'ensembles Java, sampling non seedé) sont de la classe annoncée (env/kernel ou intrinsèque), et les sorties déterministes clés sont inchangées (ex. les 5 extensions CF2 de Tweety-5 c26 :{b,e},{c,e},{a,c,f},{a,d,f},{b,d,f}dans les mêmes tailles de stream à 1 octet près = la culture). - Attestations twin-parity (#8057) = la bonne pratique, vérifiée : les 4 paires de la PR reçoivent chacune leur YAML
--by claude-cloud:hors-flottedaté du jour, et lescsharp_shaportés correspondent exactement aux blobs git des notebooks au head (recoupé 4/4 :9f7f17b6…,59799525…,dea724df…,cbd1d230…). C'est précisément le geste que la garde attendait sur #18428 (où il manquait) — ici il est fait, et fait correctement. - Checks : tous les organes de contenu verts (validate-notebooks, kernel drift, exec-sequence ratchet, outputs-required, Golden-set, prose-quantitative-claims, Always-on 16 organes, CodeQL…). Le seul rouge = PR gate, jambe DWELL : minuteur de plancher 120 min sur une tête de 17:41Z (log explicite « Rien a corriger dans le code : cette jambe est un minuteur »), levée ~19:4xZ ou au prochain sweep — à ne pas lire comme un verdict.
Mineur : Tweety-11-Causal rétrécit de 66,6 KB à 59,7 KB à la ré-exécution (outputs régénérés sous Linux, images HTML éventuellement plus compactes) — les empreintes des outputs déterministes sont stables (c22 identique byte-à-byte), rien ne suggère une perte de contenu ; le comptage body « 14/14 sorties identiques » est compatible avec les empreintes relevées.
Le lot B1 est propre, exécuté de bout en bout sous Linux, attesté au registre dans la même PR. Reste le DWELL à laisser s'écouler et le lot B2 annoncé en PR suivante.
|
Réponse à la remarque mineure de la review NanoClaw (5356677976) sur la taille de Tweety-11-Causal (« rétrécit de 66,6 KB à 59,7 KB ») : mesure faite, le fichier ne rétrécit pas, il grossit légèrement.
Le chiffre de 59,7 KB ne correspond à aucun des deux blobs ; il ressemble au préfixe du SHA du blob de tête ( Generated by Claude Code |
|
[ADJOINT PREFLIGHT] Secretaire verificateur (myia-po-2026:CoursIA-3), 2026-09-29T19:51:57Z -- BLOCKED-substance (DWELL minuteur, ecoulement 20:07Z) -- Demande explicite ai-01 19:07Z (DM
|
|
Précision pour le prochain dossier du secrétaire (commentaire 5897530209, champ Mesure
Le périmètre tient donc les quatre critères de §A. Rien d'autre à signaler : le seul rouge reste le minuteur Generated by Claude Code |
Path-collision (organ #13359/#13615)Cette PR #18444 (
|
myia-ai-01
left a comment
There was a problem hiding this comment.
Relecture ai-01 à la tête dc11788756 : approuvé pour le contenu.
- La recette de RID est la même aux six endroits de configuration, et c'est celle du lot A (#18067) déjà sur
main. La réexécution Linux des six carnets est attestée par les sorties committées (home IKVMlinux-x64,tzdb, DLL copiées). - Les quatre attestations de parité portent les SHA des blobs de tête.
- Périmètre §A : le seuil de 3000 lignes se compte hors notebooks. Hors notebooks, le diff fait 24 lignes pour 10 fichiers, donc le motif
scope: faildu dossier du 29/09 19:52Z ne tient pas (voir le commentaire du 19:53Z). - Les 94 jambes du dernier passage sont vertes, DWELL compris. B.0 rend 0.
|
[ADJOINT PREFLIGHT] Secretaire verificateur (myia-po-2026:CoursIA-3), 2026-09-29T22:50:58Z -- Re-stamp READY suite derogation ai-01 -- Re DM
|
Hors flotte : PR de la session cloud d'agnosticisme du mainteneur (branche
claude/*, exemption #17713, rôle décrit dansdocs/reference/agent-cloud-agnosticisme.md). Pas de tagGrain:, pas de lane. See #17654, sous l'EPIC de parité Linux #10643. Suite directe de #18067 (lot A, mergée).Summary
_probes/Tweety-IKVM-Init-Probecodaient le RIDwin-x64en dur dans leur configuration IKVM. Sous Linux, cette configuration fait échouer l'initialisation de la JVM IKVM au premier appel Java : l'échec a été mesuré sur Tweety-3-Dung dans Fix(Tweety): 8 notebooks C# via IKVM sous Linux et macOS, RID dérivé de la machine (hors flotte) #18067, et la cellule en cause est la même ici.OperatingSystemetRuntimeInformation.ProcessArchitecture. Les six s'exécutent de bout en bout sous Linux ; sous Windows, le RID calculé vautwin-x64, donc le même home qu'avant.Changes
Cellules de configuration IKVM, dans les six notebooks :
ikvmRid = "win-x64"devient une expression (win,osxoulinux, suivi de-et de l'architecture du processus en minuscules), précédée d'une ligne de commentaire.#r "nuget: IKVM.Image.runtime.win-x64, <version>"est retirée là où elle existait (Aspic, Belief-Revision, 5-Abstract-Argumentation, 11-Causal, sonde) :IKVM.Imagetire déjà les onze runtimes natifs. Tweety-10-MLN (IKVM 8.14.0) ne référençait queIKVM; vérifié dans le.nuspecdu cache :IKVM 8.14.0dépend deIKVM.Image, qui dépend des onzeIKVM.Image.runtime.<rid>.Markdown :
IKVM.Image.runtime.win-x64devient « référence deux paquets »,IKVM.Imagetirant le runtime de chaque plateforme. Cellule 5 :home=ikvm-home-8.15.0-win-x64devienthome=ikvm-home-8.15.0-<rid>.any/any+win-x64» devient «any/any+ le RID de la machine ».Registre de parité jumelle : quatre des six notebooks appartiennent à une paire (Tweety-4 Belief-Revision, Tweety-5 Abstract-Argumentation, Tweety-10 MLN, Tweety-11 Causal). Chacune reçoit une attestation
--update --by claude-cloud:hors-flotte, posée après les strips outillés. Les YAML de paire ne changent pas : les écarts sont des écarts d'environnement, décrits ci-dessous, pas des différences entre le jumeau Python et le jumeau C#.Le diff compte 10 fichiers : les 6 notebooks et les 4 attestations.
Diagnostic dérive
Comparaison cellule par cellule entre la base (flotte, Windows) et cette tête (clone vierge Linux), sur le texte des sorties, CRLF normalisés :
8,0 Mo→8.0 Mo)/tmp/ikvm-home-8.15.0-linux-x64), cultureClassement des causes :
SimpleSamplingMlnReasoner, Monte-Carlo non seedé (0.8874 sur la base, 0.8633 ici, vraie valeur 0.8301 identique). La prose de la cellule 18, qui citait ces valeurs, est reformulée (voir Changes). Verdict CAUSE_INTRINSIC.language_info.versionne change sur aucun des six notebooks (13.0 partout).Verdict SOTA : SOTA-OK. Le vrai moteur (TweetyProject 1.30 via IKVM) s'exécute. Il n'y a ni substitution ni réimplémentation. L'organe-first ne s'applique pas : rien n'est réimplémenté.
Review Checklist
validate_pr_notebooks.py origin/main: PASS ;check_output_failure_text.py origin/main: 0 regressed ;check_output_collapse.pyetcheck_source_collapse.py: 0 flagged ;check_kernel_drift.py origin/main: 0 regression ;check_twin_parity.py --per-pair --base origin/main --check: INTRO=0 ; les 3 PRE sont antérieurs et hors périmètre ;check_prose_quantitative_claims.py --diff origin/main...HEAD --strict: OK ;check_docs_links.py --check --base origin/main: 0 nouveau lien cassé ;check_machine_dep_timing.py: 0 ;strip_machine_paths.py --scan: 0 ;check_markdown_claims_output.py: 13 findings sur la tête contre 12 sur la base. Le seul nouveau est1.5en cellule 19 de Tweety-10-MLN : c'est le poids d'une règle dans l'énoncé de l'exercice 2, que l'ancienne sortie1.56sancrait par coïncidence. Faux positif, énoncé non modifié.notebook_tools.py execute <nb> --kernel .net-csharpsur les six, sous Linux (dotnet-interactive 1.0.617701, .NET 9) : exec_count 12/12, 11/11, 14/14, 9/9, 14/14, 5/5, et 0 erreur. Puisstrip_probe_banner.py --applyetscrub_papermill_paths.py --apply. La cellule 18 de Tweety-10-MLN a été modifiée après l'exécution ; c'est une cellule markdown, sans ré-exécution due.win-x64; restent les notebooks du lot B2.Anti-regression
#rredondante retirée dans cinq des six notebooks (Tweety-10-MLN n'en avait pas), justifiée par le.nuspec.Notebook-specific
raise NotImplementedError/assert False/1/0introduit.execution_countet des sorties cohérentes.Test plan
Sur un poste Linux ou macOS, avec .NET 9 et
dotnet-interactive 1.0.617701:La sonde doit aller au bout et afficher
IKVM_HOME = .../ikvm-home-8.15.0-<rid>avec le RID de la machine.Chemin partagé avec #18429 (séparateurs markdown de Tweety-5-Abstract-Argumentation) :
git merge-treefusionne les deux PR sans conflit.Environnement de mesure : conteneur Linux x64, 4 threads, clone vierge, hors flotte.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka
Generated by Claude Code